package com.ape.mapsa.produccion.dao;

import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Projections;
import org.springframework.stereotype.Repository;

import com.ape.mapsa.produccion.model.PedidoVenta;

@Repository
public class PedidoVentaDAOImpl extends GenericDAOImpl<PedidoVenta, Long> implements PedidoVentaDAO {

	private static final Logger log = Logger.getLogger(PedidoVentaDAOImpl.class);

	@Override
	public PedidoVenta getPedidoByNumero(PedidoVenta pedidoVenta) {
		log.debug("getting pedido by numero: " + pedidoVenta.getId());
		List<PedidoVenta> pedidosByExample = findByExample(pedidoVenta, "cliente", "creation_date");
		if (!pedidosByExample.isEmpty()) {
			log.debug("found: " + pedidosByExample.size());
			return pedidosByExample.get(0);
		} else {
			log.debug("nothing found");
			return null;
		}
	}

	@Override
	public Long getPedidoNextId() {
		Session session = sessionFactory.getCurrentSession();
		Criteria criteria = session.createCriteria(PedidoVenta.class).setProjection(Projections.max("id"));
		Long maxId = (Long) criteria.uniqueResult();
		if (maxId == null) {
			return 1L;
		} else {
			return maxId + 1L;
		}
	}
}
